1. Field of the Invention
The present invention relates to a system and a method for providing services to clients, and more particularly to a system and a method for allowing a server (or a service-providing device) to provide services to clients (or service-requesting devices) coupled to the server through a network in accordance with requests from the clients, without causing starvation or deadlock.
2. Description of the Related Art
A multi-processor system includes one or more servers and a plurality of clients, which are coupled to each other through a network. Japanese laid-open patent publication No. 11-219343 discloses utilization of a conventional technique for processing plural requests with coherency of data issued from the clients without causing starvation or deadlock.
The server will hereinafter be appreciated as a master device, whilst the clients will hereinafter be appreciated as slave devices. The term “issued request number” will herein be defined to be the number of requests from the client that still remain outstanding.
The server included in the multi-processor system disclosed in the above Japanese publication further includes a first-in first-out (FIFO) buffer which receives and holds all of the requests issued from all of the clients, so that if the server just received one or more additional requests in addition to the presence of a currently-processed request which was past received, then the server saves the one or more additional requests to the buffer, regardless of whether or not further one or more past-received requests have also been saved in the buffer.
The server provides respective priority to the saved request in the buffer, so that after the current processing to the currently-processed request has been completed, then the server will process the saved request in the sequence of the given priority. If the buffer has already held one or more saved requests, then the server may optionally give a lower priority to the just-received request than those of all of the above one or more saved requests already held by the buffer. If the buffer has no saved request, then the server will, of course, promptly process the just-received request without saving the same into the buffer.
The buffer, allowing the additional request to the currently-processed request to be saved therein, may contribute to prevent the undesirable starvation or deadlock situation. The necessary size or capacity of the buffer depends on the number of clients, and, if any, estimates of the number of the respective requests. It is generally appreciated that a large number of clients needs a large buffer.
In the above circumstances, the developments of a novel system and a novel method for providing services to clients free from the above problems are desirable.